struct particula
{
    ///Posicion
    double x,y,z;
    ///Velocidad
    double vx,vy,vz;
    ///Diametro
    double diam;
    ///Masa
    double mass;
};

struct parametros {
    ///Lados de la caja
    double lx, ly, lz;
    ///Numero de particulas
    int npart;
    ///Paso de la simulacion
    int nacc;
    ///Tiempo
    double t;
    ///Intensidad del campo
    double u0;
    ///Volumen de la caja
    double vol;

};

void importBinary (ifstream *filein, particula *part,  parametros *param)
{
    double x,y,z,vx,vy,vz,diam,fx,fy,fz;
    double lx,ly,lz;
    double t;
    int npart,nacc;
    (*filein).read(reinterpret_cast<char *>(&t), sizeof(double));
    (*filein).read(reinterpret_cast<char *>(&nacc), sizeof(int));
    (*filein).read(reinterpret_cast<char *>(&npart), sizeof(int));
    (*filein).read(reinterpret_cast<char *>(&lx), sizeof(double));
    (*filein).read(reinterpret_cast<char *>(&ly), sizeof(double));
    (*filein).read(reinterpret_cast<char *>(&lz), sizeof(double));
    param->t=t;
    param->lx=lx;
    param->ly=ly;
    param->lz=lz;
    param->nacc=nacc;
    param->npart=npart;
    for (int j=0;j<npart;j++)
    {
        (*filein).read(reinterpret_cast<char *>(&x), sizeof(double));
        (*filein).read(reinterpret_cast<char *>(&y), sizeof(double));
        (*filein).read(reinterpret_cast<char *>(&z), sizeof(double));
        (*filein).read(reinterpret_cast<char *>(&vx), sizeof(double));
        (*filein).read(reinterpret_cast<char *>(&vy), sizeof(double));
        (*filein).read(reinterpret_cast<char *>(&vz), sizeof(double));
        (*filein).read(reinterpret_cast<char *>(&fx), sizeof(double));
        (*filein).read(reinterpret_cast<char *>(&fy), sizeof(double));
        (*filein).read(reinterpret_cast<char *>(&fz), sizeof(double));
        (*filein).read(reinterpret_cast<char *>(&diam), sizeof(double));
        part[j].x=x;
        part[j].y=y;
        part[j].z=z;

        part[j].vx=vx;
        part[j].vy=vy;
        part[j].vz=vz;
        part[j].diam=diam;
        part[j].mass=pow(part[j].diam,3.0);
    }

    param->vol=(param->lx)*(param->ly)*(param->lz);

}


double import(ifstream *MiArchivo, particula *part,  parametros *param)
{
    char cdummy[80];
    double t;
    *MiArchivo>>cdummy>>t>>cdummy>>param->nacc>>cdummy>>param->npart
        >>cdummy>>param->lx>>param->ly>>param->lz;
    param->t=t;
    double rr;
    ///Importamos las posiciones y velocidades
    for(int i=0;i<param->npart;i++) {
        ///Posiciones
        *MiArchivo>>rr;
        part[i].x=rr;
        *MiArchivo>>rr;
        part[i].y=rr;
        *MiArchivo>>rr;
        part[i].z=rr;

        ///Velocidades
        *MiArchivo>>rr;
        part[i].vx=rr;
        *MiArchivo>>rr;
        part[i].vy=rr;
        *MiArchivo>>rr;
        part[i].vz=rr;

        ///Fuerzas
        *MiArchivo>>rr;
        *MiArchivo>>rr;
        *MiArchivo>>rr;


        *MiArchivo>>rr;
        part[i].diam=rr;
        part[i].mass=pow(part[i].diam,3.0);
        param->vol=(param->lx)*(param->ly)*(param->lz);
        //box->boundary(i);
    }

    return t;
}
